package model.fantasma.estados;
import model.fabricas.FabricaEstados;
import model.fabricas.FabricaIra;
import model.interfaces.IFantasma;
import model.interfaces.INivelDeIra;
import model.interfaces.IPacman;
import model.utilidades.Vector;

public class EstadoCazador extends Estado {
	protected INivelDeIra nivelIra;
	
	public EstadoCazador(IFantasma fantasma){
		super(fantasma);
		nivelIra = FabricaIra.crearNivelDeIra();
	}
	
	public void transicionAMuerto(){
		
	}
	
	public void transicionAPresa(){
		fantasma.cambiarEstado(FabricaEstados.crearEstadoPresa(fantasma));

	}

	public void actualizarEstado(){
		nivelIra.actualizarNivelDeIra();
	}

	@Override
	public void interactuarCon(IPacman pacman) {
           pacman.matar();		
	}

	@Override
	public Vector obtenerVelocidadComoBuscador() {
		int multiplicador = nivelIra.obtenerNivelDeIra();
		Vector direccion = new Vector(0,0);
		// TODO obtener direccion del movimiento

		Vector velocidad = direccion.multiplicarPorEscalar(multiplicador);
		return velocidad;
	}

	@Override
	public Vector obtenerVelocidadComoBuscadorTemperamental() {
		int multiplicador = nivelIra.obtenerNivelDeIra();
		Vector direccion = new Vector(0,0);
		// TODO obtener direccion del movimiento

		Vector velocidad = direccion.multiplicarPorEscalar(multiplicador);
		return velocidad;
	}

	@Override
	public Vector obtenerVelocidadComoPerezoso() {
		int multiplicador = nivelIra.obtenerNivelDeIra();
		Vector direccion = new Vector(0,0);
		// TODO obtener direccion del movimiento

		Vector velocidad = direccion.multiplicarPorEscalar(multiplicador);
		return velocidad;
	}

	@Override
	public Vector obtenerVelocidadComoZonzo() {
		int multiplicador = nivelIra.obtenerNivelDeIra();
		Vector direccion = new Vector(0,0);
		// TODO obtener direccion del movimiento

		Vector velocidad = direccion.multiplicarPorEscalar(multiplicador);
		return velocidad;
	}
	
}